import Vue from "vue";
import Vuex from "vuex";

import Router from 'vue-router'

//解决路由重复触发导致的报错
const originalPush = Router.prototype.push;
Router.prototype.push = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject);
  return originalPush.call(this, location).catch(err => err);
};

Vue.use(Vuex);

export default new Vuex.Store({
  state : {     // 全局管理的数据存储
    username:'您好',   //用户名字
    isLogin: false,//是否登录
    token: sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '',   // token

    timeStamp:0,  //服务器时间戳
    spikeDetail: {},  //秒杀商品详情
  },
  mutations: {
    initUser(state){
      state.username = '您好';
    },
    setToken(state, value) { // 设置存储token
      state.token = value;
      sessionStorage.setItem('token', value);
    },
    removeStorage(state) {  // 删除token
      sessionStorage.removeItem('token');
    },
    isLogin(state,value){
      state.isLogin = value;
    },
    userName(state,value){
      state.username=value;
    },
    getTimeStamp(state,value){
      state.timeStamp = value;
    },
    getSpikeDetail(state,value){
      state.spikeDetail = value;
    },
    setTime(value){
      sessionStorage.setItem('timeOut',value);
    }
  },
})


// const store = new Vuex.Store({
//   state: {
//     // 相当于sessionStorage是永久仓库，数据拿进拿出都很方便，vuex是临时仓库，两者需要建立联系。
//     // 刷新后,vuex的数据会消失，需要从sessionStorage中重新获取。
//     token: sessionStorage.getItem("token")
//       ? sessionStorage.getItem("token")
//       : "",
//     info: sessionStorage.getItem("info")
//       ? JSON.parse(sessionStorage.getItem("info"))
//       : {},
//     name: 'lijia'
//   },
//   mutations: {
//     setInfo(state, payload) {
//       state.token = payload.token;
//       state.info = payload.info;
//     },
//     clearInfo(state) {
//       state.token = "";
//       state.info = ""
//     }
//   },
//   actions: {
//     //   context的话就相当于state的父亲，上一级，包含着state中的所有属性,也就是mutation?
//     login(contxt, payload) {
//       // console.log(contxt.commit,'999')
//       post('api/login', payload).then(res => {
//         //验证通过，登录成功，要将数据保存到vuex中和缓存中
//         if (res.message == 'SUCCESS') {
//           // 路由传值this.$router.push()，这个方法会向history栈添加一个新纪录，所以当浏览器点击后退按钮时，会返回之前的url
//           // 登录成功之后要把整个list都保存起来，
//           //因为下面这里面存的是对象，要转化成字符串，才能存到store中index.js的state中
//           // 放在本地存储中，
//           sessionStorage.setItem("token", res.data);
//           // sessionStorage.setItem("info", JSON.stringify(res.list));
//           // 保存在vuex中
//           contxt.commit("setInfo", { token: res.data })
//           //  contxt.commit("setInfo",{token:res.data,info:res.list})
//           // this.$router.push("/")
//           //   因为引入了Router,所以可以直接用Router.push
//           router.push("/");
//           Message.success("登录成功！");
//         } else {
//           Message.error(res.msg)
//         }
//       });
//     }
//   }
// });
// // 需要暴露和注册到main.js中，貌似自己写的文件夹里面写的东西，最好都是注册到main.js中

